package com.tn.service.key.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tn.dao.key.ShortcutKey;
import com.tn.dao.key.ShortcutKeyAttr;
import com.tn.dao.key.ShortcutKeyMapper;
import com.tn.service.key.ShortcutKeyService;
import com.tn.utils.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


/**
 * 快捷键Service业务层处理
 * 
 * @author location
 * @date 2022-11-24
 */
@Service
public class ShortcutKeyServiceImpl extends ServiceImpl<ShortcutKeyMapper, ShortcutKey> implements ShortcutKeyService
{
    @Autowired
    private ShortcutKeyMapper shortcutKeyMapper;

    /**
     * 查询快捷键
     * 
     * @param id 快捷键主键
     * @return 快捷键
     */
    @Override
    public ShortcutKey selectShortcutKeyById(Long id)
    {
        return shortcutKeyMapper.selectShortcutKeyById(id);
    }

    /**
     * 查询快捷键列表
     * 
     * @param shortcutKey 快捷键
     * @return 快捷键
     */
    @Override
    public List<ShortcutKey> selectShortcutKeyList(ShortcutKey shortcutKey)
    {
        QueryWrapper<ShortcutKey>wrapper=new QueryWrapper<>();
        if(shortcutKey.getKeyCode()!=null){
            wrapper.like("key_code",shortcutKey.getKeyCode());
        }
        if(shortcutKey.getPoundNo()!=null){
            wrapper.like("pound_no",shortcutKey.getPoundNo());
        }
        if(shortcutKey.getCntrSizeType()!=null){
            wrapper.like("cntr_size_type",shortcutKey.getCntrSizeType());
        }
        if(shortcutKey.getGoodsName()!=null){
            wrapper.like("goods_name",shortcutKey.getGoodsName());
        }
        if(shortcutKey.getConsignCompanyName()!=null){
            wrapper.like("consign_company_name",shortcutKey.getConsignCompanyName());
        }
        if(shortcutKey.getShipNo()!=null){
            wrapper.like("ship_no",shortcutKey.getShipNo());
        }
        if(shortcutKey.getCustomerCompanyName()!=null){
            wrapper.like("customer_company_name",shortcutKey.getCustomerCompanyName());
        }
        if(shortcutKey.getContractNo()!=null){
            wrapper.like("contract_no",shortcutKey.getContractNo());
        }
        if(shortcutKey.getRemark()!=null){
            wrapper.like("remark",shortcutKey.getRemark());
        }
        if(shortcutKey.getCntrNo()!=null){
            wrapper.like("cntr_no",shortcutKey.getCntrNo());
        }
        if(shortcutKey.getFlowDirectionName()!=null){
            wrapper.like("flow_direction_name",shortcutKey.getFlowDirectionName());
        }
        return shortcutKeyMapper.selectList(wrapper);

    }

    /**
     * 新增快捷键
     * 
     * @param shortcutKey 快捷键
     * @return 结果
     */
    @Override
    public int insertShortcutKey(ShortcutKey shortcutKey)
    {
        //查询是否存在快捷键
        QueryWrapper<ShortcutKey>wrapper=new QueryWrapper<>();
        wrapper.eq("key_code",shortcutKey.getKeyCode());
        ShortcutKey shortcutKey1 = baseMapper.selectOne(wrapper);
        if (shortcutKey1!=null){
            throw new RuntimeException("存在相同的快捷键");
        }
        return shortcutKeyMapper.insert(shortcutKey);
    }

    /**
     * 修改快捷键
     * 
     * @param shortcutKey 快捷键
     * @return 结果
     */
    @Override
    public int updateShortcutKey(ShortcutKey shortcutKey)
    {
        QueryWrapper<ShortcutKey>wrapper=new QueryWrapper<>();
        wrapper.ne("id",shortcutKey.getId());
        wrapper.eq("key_code",shortcutKey.getKeyCode());
        ShortcutKey shortcutKey1 = baseMapper.selectOne(wrapper);
        if (shortcutKey1!=null){
            throw new RuntimeException("存在相同的快捷键");
        }
        return shortcutKeyMapper.updateById(shortcutKey);
    }

    /**
     * 批量删除快捷键
     * 
     * @param ids 需要删除的快捷键主键
     * @return 结果
     */

    @Transactional
    @Override
    public int deleteShortcutKeyByIds(List<Long> ids)
    {
        return shortcutKeyMapper.deleteBatchIds(ids);
    }



}
